package cn.gov.cus.rmftquartz.mappers.oracle.provider;

import cn.gov.cus.rmftquartz.entity.RskEntryVo;
import com.google.common.base.Strings;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.jdbc.SQL;

import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * @author wxming.
 * @date 2018/2/11.
 */
public class EntryProvider {
    private final String tableName = "";
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

    public String toLockManifest(@Param("rskEntryVo")RskEntryVo rskEntryVo){
        SQL sql = new SQL();
        sql.INSERT_INTO("RSK");

        if(rskEntryVo != null){//字符串的这么判断，别的类型的可直接判断null。
            if(!Strings.isNullOrEmpty(rskEntryVo.getRskId())){
                sql.INTO_COLUMNS("RSK_ID");
                sql.INTO_VALUES("#{rskEntryVo.rskId}");
            }
            if(!Strings.isNullOrEmpty(rskEntryVo.getRskName())){
                sql.INTO_COLUMNS("RSK_NAME");
                sql.INTO_VALUES("#{rskEntryVo.rskName}");
            }
            if(!Strings.isNullOrEmpty(rskEntryVo.getRskAge())){
                sql.INTO_COLUMNS("RSK_AGE");
                sql.INTO_VALUES("#{rskEntryVo.rskAge}");
            }
            sql.INTO_COLUMNS("CREATE_TIME");
            sql.INTO_VALUES("\'"+sdf.format(new Date())+"\'");
        }
        return sql.toString();
    }


    //从页面上查询时防止sql注入的写法：doSelectByObj
    public String doSelectByObj(RskEntryVo paraList){//不能写@Param()。写了之后需要像上面那样#{rskEntryVo.rskAge}去点属性名。
        SQL sql=new SQL().SELECT("*").FROM(tableName);
        if(paraList.getId() != 0){
            sql.WHERE("ID LIKE #{id}");
        }
        if(!Strings.isNullOrEmpty(paraList.getRskName())){
            sql.WHERE("RSK_NAME LIKE '%'||#{rskName}||'%'");//like的加%的必须用||拼接。
        }
        if(!Strings.isNullOrEmpty(paraList.getRskAge())){
            sql.WHERE("RSK_AGE = #{rskAge}");
        }
        sql.ORDER_BY("CREAT_TIME DESC");
        return  sql.toString();
    }

}
